Skip to main content

Deploy na nuvem


Documentação de Deploy na AWS Usando Terraform

1. Pré-requisitos​

Antes de iniciar o deploy, você deve garantir que os seguintes requisitos estejam atendidos:

  • Conta AWS: Acesso válido a uma conta AWS.
  • IAM User: Um usuário IAM com permissões para gerenciar recursos (EC2, S3, RDS, etc.).
  • Terraform: Instalado e configurado localmente. Guia de instalação
  • AWS CLI: Configurado e autenticado com suas credenciais. Guia de configuração

Instalar Terraform e AWS CLI​

  1. Instale o Terraform seguindo as instruções: Terraform CLI Installation.
  2. Instale e configure a AWS CLI: AWS CLI Installation.

Configuração da AWS CLI​

aws configure

Informe:

  • AWS Access Key ID
  • AWS Secret Access Key
  • Default region name (ex: us-east-1)
  • Default output format (ex: json)

2. Arquitetura de Deploy​

  • 5 EC2 Instances (tipo t2.micro)
  • 2 RDS Instances (MySQL)
  • 1 Bucket S3

3. Arquivos Terraform​

3.1. Estrutura do Diretório​

infrastructure
├──terraform
├── ec2.tf
├── main.tf
├── rds.tf
├── s3.tf
├── sg.tf
└── terraform.tfstate

3.4. Arquivo main.tf​

Neste arquivo, configuramos todos as variáveis de versionamento.

3.4.1. EC2 Instances​

Aqui criamos 5 instâncias EC2 com o tipo t2.micro.

resource "aws_instance" "app" {
count = var.ec2_count
ami = "ami-0c55b159cbfafe1f0" # Amazon Linux 2 AMI
instance_type = var.instance_type

tags = {
Name = "AppInstance-${count.index + 1}"
}
}

3.4.2. RDS Instances​

Aqui criamos 2 bancos de dados RDS Postgres.

resource "aws_db_instance" "db" {
count = 2
allocated_storage = 20
engine = "postgres"
instance_class = "db.t2.micro"
name = var.db_name
username = var.db_username
password = var.db_password
parameter_group_name = "default.mysql8.0"
skip_final_snapshot = true
publicly_accessible = false

tags = {
Name = "RDSInstance-${count.index + 1}"
}
}

3.4.3. S3 Bucket​

Aqui criamos um bucket S3 para armazenar dados.

resource "aws_s3_bucket" "bucket_main" {
bucket = "bucket_greench"

}

4. Deploy com Terraform​

4.1. Inicializar o Terraform​

Este comando irá baixar os provedores e preparar o ambiente:

terraform init

4.2. Visualizar o plano​

Você pode visualizar o que será criado antes de aplicar:

terraform plan

4.3. Aplicar o plano​

Para iniciar o deploy da infraestrutura na AWS:

terraform apply

Digite "yes" quando solicitado para confirmar a criação dos recursos.


5. Monitoramento e Acesso​

5.1. Verificar as instâncias EC2​

Após o deploy, você pode verificar as instâncias EC2 pela AWS Management Console ou diretamente pelas saídas do Terraform, que mostram os IPs públicos.

Para conectar-se via SSH a uma das instâncias EC2, use o seguinte comando (substitua <public_ip> pelo IP retornado pelo output):

ssh -i /path/to/your-key.pem ec2-user@<public_ip>

5.2. Acessar o RDS​

Você pode acessar o banco de dados RDS com as credenciais definidas no arquivo do RDS. O endpoint RDS será exibido nas saídas do Terraform.


6. Encerramento​

6.1. Destruir a infraestrutura​

Para remover toda a infraestrutura criada, execute o comando abaixo. Isso removerá todas as instâncias EC2, RDS e o bucket S3:

terraform destroy

Digite "yes" para confirmar a destruição.


7. Considerações Finais​

Este guia fornece uma base sólida para o deploy de nossa infraestrutura AWS usando Terraform. Dependendo das necessidades específicas do projeto, essa estrutura pode ser expandida para incluir mais serviços, como Elastic Load Balancing (ELB), Auto Scaling, VPCs, entre outros.